<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数对象的方法</title>
</head>
<body>
<script>
    /*函数的方法：
     *       call()和apply()函数对象的方法,需要通过函数对象来调用 当对函数调用时 用fun.call()和fun.apply()
     *      在调用call()和apply()可以将一个对象指定为第一个参数 此时这个对象将会成为函数执行时的this
    *           call()方法可以将实参在对象之后依次传递
    *           apply()方法需要将实参封装到一个数组中进行传递
    *           this的四种方法:
    *                       1.函数调用时，this就是window
    *                       2.对象的方法调用时，this就是调用方法的对象
    *                       3.构造函数调用时，this就是新创建的对象
    *                       4.apply()和call()调用时 this就是传进来的第一个参数
    *                       5.在事件的响应函数中，单击响应函数是给谁绑定的this就是谁
    * */
    function fun(a,b) {
        // alert(this);
        console.log("a="+a);
        console.log("b="+b);
    }
    var obj={
        name:"obj",
        sayName:function () {
            alert(this.name);
        }
    };
    var obj2={name:"obj2"};
    // fun();//调用函数
    // fun.call();//调用函数
    // fun.apply();//调用函数
    // fun.call(obj);
    fun.call(obj2,2,3);
    fun.apply(obj,[4,5]);

</script>
</body>
</html>